<?php
/**
 * 招集目的選択コントローラモジュール
 */
require_once  __DIR__ . '/../ZendPartial.php';
require_once APPLICATION_PATH . '/models/Calendar/xml/CalendarXmlController.php';

/**
 * 招集目的選択コントローラクラス
 * @author admin
 */
class Components_SelectPurposeController extends Components_ZendPartial
{
	/** テンプレートファイル名 */
	const NAME_TEMPLATE_RADIO = 'radio.tpl';
	/** ラジオボタン選択属性指定子 */
	const RADIO_CHECKED = 'checked="checked"';
	/** 値：未選択 */
	const VALUE_NOT_SELECTED = '';

	/** コントロールネーム */
	public $NAME;

	/** カレンダーデータセットオブジェクト */
	protected $_objCalendar;
	/** HTTPリクエストオブジェクト */
	protected $_objHttpRequest;
	/** 設定済み招集目的 */
	protected $_SelectedPurpose;

	/**
	 * コンストラクタ
	 * @param $objCalendar
	 */
	public function __construct($objCalendar)
	{
		parent::__construct(__DIR__);
		$this->_objCalendar = $objCalendar;
		$this->_objHttpRequest = new Lib_Request();
		$this->NAME = Models_Calendar_Controller::KEY_EVENT_CATEGORY;
		$this->view->NAME = $this->NAME;
		$this->_setSelectedPurpose();
	}

	public function getName()
	{

	}

	/**
	 * ラジオボタン配列を返すフェッチ
	 * @see Components_ZendPartial::fetch()
	 */
	public function fetchRadioList()
	{
		$aryResult = array();
		/*** イベントカテゴリー定期練習 */
		$this->view->VALUE = Models_Calendar_Controller::VALUE_EVENT_CATEGORY_PERIOD_TRAINING;
		$this->view->DISP = $this->view->VALUE;
		if ($this->_SelectedPurpose == $this->view->VALUE) {
			$this->view->CHECKED = self::RADIO_CHECKED;
		}else{
			$this->view->CHECKED = self::VALUE_NOT_SELECTED;
		}
		$aryResult[0] = parent::fetch(self::NAME_TEMPLATE_RADIO);

		/*** イベントカテゴリー試合 */
		$this->view->VALUE = Models_Calendar_Controller::VALUE_EVENT_CATEGORY_MATCH;
		$this->view->DISP = $this->view->VALUE;
		if ($this->_SelectedPurpose == $this->view->VALUE) {
			$this->view->CHECKED = self::RADIO_CHECKED;
		}else{
			$this->view->CHECKED = self::VALUE_NOT_SELECTED;
		}
		$aryResult[1] = parent::fetch(self::NAME_TEMPLATE_RADIO);

		/*** イベントカテゴリーレクレーション */
		$this->view->VALUE = Models_Calendar_Controller::VALUE_EVENT_CATEGORY_RECREATION;
		$this->view->DISP = $this->view->VALUE;
		if ($this->_SelectedPurpose == $this->view->VALUE) {
			$this->view->CHECKED = self::RADIO_CHECKED;
		}else{
			$this->view->CHECKED = self::VALUE_NOT_SELECTED;
		}
		$aryResult[2] = parent::fetch(self::NAME_TEMPLATE_RADIO);

		return $aryResult;
	}

	/**
	 * カレンダーデータセットオブジェクトから設定済み招集目的を取得する
	 */
	protected function _setSelectedPurpose()
	{
		/*** 未設定のデフォルトを「定期練習」にする */
		$this->_SelectedPurpose = Models_Calendar_Controller::VALUE_EVENT_CATEGORY_PERIOD_TRAINING;
		/*** HTTPリクエストのイベントカテゴリーがあればそれをデフォルトにする */
		$eventCategory = $this->_objHttpRequest->get(Names::EVENT_CATEGORY);
		if ($eventCategory != '') {
			$this->_SelectedPurpose = $eventCategory;
			return;
		}
		/*** 予定IDをHTTPリクエストから取得する*/
		$YoteiId = $this->_objHttpRequest->get(Names::YOTEIID);
		/*** 予定ＩＤが設定されていない場合、「定期練習」を返す */
		if ( $YoteiId == '' ){
			return '';
		}
		/*** カレンダーデータセットから予定データセットを取得する */
		$YoteiDataset = $this->_objCalendar->searchId($YoteiId);
		/*** 予定ＩＤに該当するデータセットがない場合、選択なし返す。 */
		if ( $YoteiDataset === FALSE ) {
			return '';
		}
		/** 選択済み招集目的取得設置 */
		$this->_SelectedPurpose = trim($YoteiDataset[Models_Calendar_Controller::KEY_EVENT_CATEGORY]);
		return $this->_SelectedPurpose;
	}
}